From f8e8438eefb8d51a5c65db04dcdbc1467b991e1a Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Fri, 11 Nov 2005 12:55:47 +0100 Subject: [PATCH] Remove unnecessary NULL checks before freeing memory blocks. The following functions check for NULL internally: free, kfree, xfree, free_xenheap_page[s] Signed-off-by: Keir Fraser --- .../drivers/char/tpm/tpm_xen.c | 12 +++------ .../drivers/xen/blkback/xenbus.c | 6 ++--- .../drivers/xen/blkfront/blkfront.c | 3 +-- .../drivers/xen/blktap/xenbus.c | 6 ++--- .../drivers/xen/netback/loopback.c | 6 ++--- .../drivers/xen/netback/xenbus.c | 6 ++--- .../drivers/xen/netfront/netfront.c | 2 +- .../drivers/xen/tpmback/tpmback.c | 4 +-- .../drivers/xen/tpmback/xenbus.c | 12 +++------ .../drivers/xen/tpmfront/tpmfront.c | 3 +-- tools/blktap/blkif.c | 3 +-- tools/blktap/parallax/blockstore.c | 6 ++--- tools/blktap/parallax/blockstored.c | 3 +-- tools/blktap/parallax/requests-async.c | 2 +- tools/blktap/xenbus.c | 21 +++++---------- tools/console/daemon/io.c | 17 +++++------- tools/ioemu/hw/magic-load.c | 6 ++--- tools/ioemu/vnc.c | 6 ++--- tools/libxc/xc_ia64_stubs.c | 12 +++------ tools/libxc/xc_linux_build.c | 13 +++------ tools/libxc/xc_vmx_build.c | 13 +++------ tools/python/xen/lowlevel/xs/xs.c | 9 +++---- tools/vtpm_manager/manager/securestorage.c | 3 +-- tools/vtpm_manager/util/bsg.c | 3 +-- tools/xenstat/libxenstat/src/xenstat.c | 6 ++--- tools/xenstore/xenstored_core.c | 2 -- xen/acm/acm_chinesewall_hooks.c | 27 +++++++------------ xen/acm/acm_simple_type_enforcement_hooks.c | 8 +++--- xen/arch/ia64/xen/grant_table.c | 3 +-- xen/arch/x86/mm.c | 6 ++--- xen/arch/x86/mtrr/generic.c | 3 +-- xen/arch/x86/vmx_vmcs.c | 21 ++++++--------- xen/common/event_channel.c | 3 +-- xen/common/grant_table.c | 3 +-- xen/common/page_alloc.c | 3 +++ 35 files changed, 89 insertions(+), 173 deletions(-) diff --git a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c index 2557d586d6..1c6de43b45 100644 --- a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c +++ b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c @@ -97,9 +97,7 @@ static inline unsigned char * transmission_set_buffer(struct transmission *t, unsigned char *buffer, unsigned int len) { - if (NULL != t->request) { - kfree(t->request); - } + kfree(t->request); t->request = kmalloc(len, GFP_KERNEL); if (t->request) { memcpy(t->request, @@ -113,12 +111,8 @@ transmission_set_buffer(struct transmission *t, static inline void transmission_free(struct transmission *t) { - if (t->request) { - kfree(t->request); - } - if (t->rcv_buffer) { - kfree(t->rcv_buffer); - } + kfree(t->request); + kfree(t->rcv_buffer); kfree(t); } diff --git a/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c index 1e40eb1947..1d5a01a10f 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c @@ -48,8 +48,7 @@ static int blkback_remove(struct xenbus_device *dev) unregister_xenbus_watch(&be->backend_watch); if (be->blkif) blkif_put(be->blkif); - if (be->frontpath) - kfree(be->frontpath); + kfree(be->frontpath); kfree(be); return 0; } @@ -274,8 +273,7 @@ static int blkback_probe(struct xenbus_device *dev, free_be: if (be->backend_watch.node) unregister_xenbus_watch(&be->backend_watch); - if (frontend) - kfree(frontend); + kfree(frontend); kfree(be); return err; } diff --git a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c index c47b053b98..a865e88f31 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c @@ -607,8 +607,7 @@ again: destroy_blkring: blkif_free(info); out: - if (backend) - kfree(backend); + kfree(backend); return err; } diff --git a/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c index b9a5f7a94f..d93f622136 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/blktap/xenbus.c @@ -52,8 +52,7 @@ static int blkback_remove(struct xenbus_device *dev) unregister_xenbus_watch(&be->backend_watch); if (be->blkif) blkif_put(be->blkif); - if (be->frontpath) - kfree(be->frontpath); + kfree(be->frontpath); kfree(be); return 0; } @@ -201,8 +200,7 @@ static int blkback_probe(struct xenbus_device *dev, free_be: if (be->backend_watch.node) unregister_xenbus_watch(&be->backend_watch); - if (frontend) - kfree(frontend); + kfree(frontend); kfree(be); return err; } diff --git a/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c b/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c index 9d6adaa56b..31f7978af8 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c +++ b/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c @@ -160,10 +160,8 @@ static int __init make_loopback(int i) return 0; fail: - if (dev1 != NULL) - kfree(dev1); - if (dev2 != NULL) - kfree(dev2); + kfree(dev1); + kfree(dev2); return err; } diff --git a/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c index f6218fab42..44b7391425 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/netback/xenbus.c @@ -46,8 +46,7 @@ static int netback_remove(struct xenbus_device *dev) unregister_xenbus_watch(&be->backend_watch); if (be->netif) netif_disconnect(be->netif); - if (be->frontpath) - kfree(be->frontpath); + kfree(be->frontpath); kfree(be); return 0; } @@ -253,8 +252,7 @@ static int netback_probe(struct xenbus_device *dev, free_be: if (be->backend_watch.node) unregister_xenbus_watch(&be->backend_watch); - if (frontend) - kfree(frontend); + kfree(frontend); kfree(be); return err; } diff --git a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c index 33d6464f27..93c39fd858 100644 --- a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c +++ b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c @@ -917,7 +917,7 @@ static int create_netdev(int handle, struct xenbus_device *dev, np->netdev = netdev; exit: - if ((err != 0) && (netdev != NULL)) + if (err != 0) kfree(netdev); else if (val != NULL) *val = netdev; diff --git a/linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c b/linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c index 543c880560..dd14f6087c 100644 --- a/linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c +++ b/linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c @@ -167,9 +167,7 @@ static void inline packet_free(struct packet *pak) { del_singleshot_timer_sync(&pak->processing_timer); - if (pak->data_buffer) { - kfree(pak->data_buffer); - } + kfree(pak->data_buffer); /* * cannot do tpmif_put(pak->tpmif); bad things happen * on the last tpmif_put() diff --git a/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c b/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c index 954330d0de..5fd19de6d8 100644 --- a/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c +++ b/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c @@ -41,19 +41,16 @@ static int tpmback_remove(struct xenbus_device *dev) { struct backend_info *be = dev->data; - if (be->watch.node) { + if (be->watch.node) unregister_xenbus_watch(&be->watch); - } unregister_xenbus_watch(&be->backend_watch); tpmif_vtpm_close(be->instance); - if (be->tpmif) { + if (be->tpmif) tpmif_put(be->tpmif); - } - if (be->frontpath) - kfree(be->frontpath); + kfree(be->frontpath); kfree(be); return 0; } @@ -258,8 +255,7 @@ static int tpmback_probe(struct xenbus_device *dev, free_be: if (be->backend_watch.node) unregister_xenbus_watch(&be->backend_watch); - if (frontend) - kfree(frontend); + kfree(frontend); kfree(be); return err; } diff --git a/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c b/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c index 6a39e057cf..472a4000a1 100644 --- a/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c +++ b/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c @@ -387,8 +387,7 @@ abort_transaction: destroy_tpmring: destroy_tpmring(info, &my_private); out: - if (backend) - kfree(backend); + kfree(backend); return err; } diff --git a/tools/blktap/blkif.c b/tools/blktap/blkif.c index f4f386ced1..73afc50d95 100644 --- a/tools/blktap/blkif.c +++ b/tools/blktap/blkif.c @@ -108,8 +108,7 @@ void free_blkif(blkif_t *blkif) } pblkif = &curs->hash_next; } - if (blkif != NULL) - free(blkif); + free(blkif); } void blkif_register_request_hook(blkif_t *blkif, char *name, diff --git a/tools/blktap/parallax/blockstore.c b/tools/blktap/parallax/blockstore.c index 7967edb555..cecca2752a 100644 --- a/tools/blktap/parallax/blockstore.c +++ b/tools/blktap/parallax/blockstore.c @@ -604,8 +604,7 @@ void *readblock_indiv(int server, uint64_t id) { return block; err: - if (qe->block) - free(qe->block); + free(qe->block); free((void *)qe); return NULL; } @@ -1072,7 +1071,7 @@ uint64_t allocblock_hint(void *block, uint64_t hint) { * * @return: pointer to new block, NULL on error */ -void *newblock() { +void *newblock(void) { void *block = malloc(BLOCK_SIZE); if (block == NULL) { perror("newblock"); @@ -1089,7 +1088,6 @@ void *newblock() { * @block: block to be freed */ void freeblock(void *block) { - if (block != NULL) free(block); } diff --git a/tools/blktap/parallax/blockstored.c b/tools/blktap/parallax/blockstored.c index 1ed2489b6c..76d5c009d8 100644 --- a/tools/blktap/parallax/blockstored.c +++ b/tools/blktap/parallax/blockstored.c @@ -232,7 +232,7 @@ uint64_t allocblock(void *block) { * * @return: pointer to new block, NULL on error */ -void *newblock() { +void *newblock(void) { void *block = malloc(BLOCK_SIZE); if (block == NULL) { perror("newblock"); @@ -249,7 +249,6 @@ void *newblock() { * @block: block to be freed */ void freeblock(void *block) { - if (block != NULL) free(block); } diff --git a/tools/blktap/parallax/requests-async.c b/tools/blktap/parallax/requests-async.c index e89cb909ba..75d3aa2f23 100755 --- a/tools/blktap/parallax/requests-async.c +++ b/tools/blktap/parallax/requests-async.c @@ -715,7 +715,7 @@ static void write_cb(struct io_ret r, void *param) r.u.i = -1; /* free any saved node vals. */ for (i=0; i<3; i++) - if (req->radix[i] != 0) free(req->radix[i]); + free(req->radix[i]); free(req); cb(r, req_param); } diff --git a/tools/blktap/xenbus.c b/tools/blktap/xenbus.c index 99ba9ea49e..93f21eb6bd 100644 --- a/tools/blktap/xenbus.c +++ b/tools/blktap/xenbus.c @@ -339,10 +339,8 @@ static int backend_remove(struct xs_handle *h, struct backend_info *be) /* Free everything else. */ if (be->blkif) free_blkif(be->blkif); - if (be->frontpath) - free(be->frontpath); - if (be->backpath) - free(be->backpath); + free(be->frontpath); + free(be->backpath); free(be); return 0; } @@ -406,8 +404,7 @@ static void frontend_changed(struct xs_handle *h, struct xenbus_watch *w, return; fail: - if (fepath) - free(fepath); + free(fepath); } @@ -460,9 +457,7 @@ static void backend_changed(struct xs_handle *h, struct xenbus_watch *w, } fail: - if (path) - free(path); - + free(path); } static void blkback_probe(struct xs_handle *h, struct xenbus_watch *w, @@ -537,12 +532,10 @@ static void blkback_probe(struct xs_handle *h, struct xenbus_watch *w, return; free_be: - if ((be) && (be->backend_watch.node)) + if (be && (be->backend_watch.node)) unregister_xenbus_watch(h, &be->backend_watch); - if (frontend) - free(frontend); - if (bepath) - free(bepath); + free(frontend); + free(bepath); free(be); return; } diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c index d4593f0d80..6a9de1b48f 100644 --- a/tools/console/daemon/io.c +++ b/tools/console/daemon/io.c @@ -344,8 +344,7 @@ static struct domain *create_domain(int domid) return dom; out: - if (dom->conspath) - free(dom->conspath); + free(dom->conspath); free(dom); return NULL; } @@ -380,20 +379,16 @@ static void cleanup_domain(struct domain *d) if (!buffer_empty(&d->buffer)) return; - if (d->buffer.data) { - free(d->buffer.data); - d->buffer.data = NULL; - } - if (d->tty_fd != -1) { close(d->tty_fd); d->tty_fd = -1; } - if (d->conspath) { - free(d->conspath); - d->conspath = NULL; - } + free(d->buffer.data); + d->buffer.data = NULL; + + free(d->conspath); + d->conspath = NULL; remove_domain(d); } diff --git a/tools/ioemu/hw/magic-load.c b/tools/ioemu/hw/magic-load.c index 06a5f743af..22ef06f564 100644 --- a/tools/ioemu/hw/magic-load.c +++ b/tools/ioemu/hw/magic-load.c @@ -196,10 +196,8 @@ static void load_symbols(struct elfhdr *ehdr, int fd) goto error_freesyms; /* Commit */ - if (disas_symtab) - qemu_free(disas_symtab); /* XXX Merge with old symbols? */ - if (disas_strtab) - qemu_free(disas_strtab); + qemu_free(disas_symtab); /* XXX Merge with old symbols? */ + qemu_free(disas_strtab); disas_symtab = syms; disas_num_syms = nsyms; disas_strtab = str; diff --git a/tools/ioemu/vnc.c b/tools/ioemu/vnc.c index 233db50f96..7a862ffe33 100644 --- a/tools/ioemu/vnc.c +++ b/tools/ioemu/vnc.c @@ -187,8 +187,7 @@ static void mouse_find_bounding_box_of_difference(int* x,int* y,int* w,int* h) { static void start_mouse_calibration() { int size = screen->height*screen->paddedWidthInBytes; - if(mouse_magic->calibration) - free(mouse_magic->calibration); + free(mouse_magic->calibration); mouse_magic->calibration = malloc(size); memcpy(mouse_magic->calibration, screen->frameBuffer, size); calibration_step=0; @@ -198,8 +197,7 @@ static void start_mouse_calibration() { } static void stop_mouse_calibration() { - if(mouse_magic->calibration) - free(mouse_magic->calibration); + free(mouse_magic->calibration); mouse_magic->calibration = 0; } diff --git a/tools/libxc/xc_ia64_stubs.c b/tools/libxc/xc_ia64_stubs.c index 281ec51980..e926c87c33 100644 --- a/tools/libxc/xc_ia64_stubs.c +++ b/tools/libxc/xc_ia64_stubs.c @@ -77,7 +77,7 @@ int xc_ia64_copy_to_domain_pages(int xc_handle, uint32_t domid, { // N.B. gva should be page aligned - unsigned long *page_array=NULL; + unsigned long *page_array = NULL; int i; if ( (page_array = malloc(nr_pages * sizeof(unsigned long))) == NULL ){ @@ -99,8 +99,7 @@ int xc_ia64_copy_to_domain_pages(int xc_handle, uint32_t domid, return 0; error_out: - if (page_array) - free(page_array); + free(page_array); return -1; } @@ -657,8 +656,7 @@ int xc_vmx_build(int xc_handle, goto error_out; } - if ( image != NULL ) - free(image); + free(image); ctxt->flags = VGCF_VMX_GUEST; ctxt->regs.cr_iip = 0x80000000ffffffb0UL; @@ -675,9 +673,7 @@ int xc_vmx_build(int xc_handle, return rc; error_out: - if ( image != NULL ) - free(image); - + free(image); return -1; } diff --git a/tools/libxc/xc_linux_build.c b/tools/libxc/xc_linux_build.c index 49ed75e52d..ff3ecf84f6 100644 --- a/tools/libxc/xc_linux_build.c +++ b/tools/libxc/xc_linux_build.c @@ -670,10 +670,8 @@ static int setup_guest(int xc_handle, return 0; error_out: - if ( mmu != NULL ) - free(mmu); - if ( page_array != NULL ) - free(page_array); + free(mmu); + free(page_array); return -1; } #endif @@ -768,8 +766,7 @@ int xc_linux_build(int xc_handle, close(initrd_fd); if ( initrd_gfd ) gzclose(initrd_gfd); - if ( image != NULL ) - free(image); + free(image); #ifdef __ia64__ /* based on new_thread in xen/arch/ia64/domain.c */ @@ -858,9 +855,7 @@ int xc_linux_build(int xc_handle, gzclose(initrd_gfd); else if ( initrd_fd >= 0 ) close(initrd_fd); - if ( image != NULL ) - free(image); - + free(image); return -1; } diff --git a/tools/libxc/xc_vmx_build.c b/tools/libxc/xc_vmx_build.c index f22d7ece4c..ea83366813 100644 --- a/tools/libxc/xc_vmx_build.c +++ b/tools/libxc/xc_vmx_build.c @@ -565,10 +565,8 @@ static int setup_guest(int xc_handle, return 0; error_out: - if ( mmu != NULL ) - free(mmu); - if ( page_array != NULL ) - free(page_array); + free(mmu); + free(page_array); return -1; } @@ -663,8 +661,7 @@ int xc_vmx_build(int xc_handle, goto error_out; } - if ( image != NULL ) - free(image); + free(image); ctxt->flags = VGCF_VMX_GUEST; /* FPU is set up to default initial state. */ @@ -710,9 +707,7 @@ int xc_vmx_build(int xc_handle, return rc; error_out: - if ( image != NULL ) - free(image); - + free(image); return -1; } diff --git a/tools/python/xen/lowlevel/xs/xs.c b/tools/python/xen/lowlevel/xs/xs.c index 03e6f6dcd5..6f195437a7 100644 --- a/tools/python/xen/lowlevel/xs/xs.c +++ b/tools/python/xen/lowlevel/xs/xs.c @@ -114,8 +114,7 @@ static PyObject *xspy_read(PyObject *self, PyObject *args, PyObject *kwds) } val = PyString_FromStringAndSize(xsval, xsval_n); exit: - if (xsval) - free(xsval); + free(xsval); return val; } @@ -427,8 +426,7 @@ static PyObject *xspy_set_permissions(PyObject *self, PyObject *args, val = Py_None; exit: Py_XDECREF(tuple0); - if (xsperms) - free(xsperms); + free(xsperms); return val; } @@ -541,8 +539,7 @@ again: /* Create tuple (path, token). */ val = Py_BuildValue("(sO)", xsval[XS_WATCH_PATH], token); exit: - if (xsval) - free(xsval); + free(xsval); return val; } diff --git a/tools/vtpm_manager/manager/securestorage.c b/tools/vtpm_manager/manager/securestorage.c index 5cef086802..82dd70f514 100644 --- a/tools/vtpm_manager/manager/securestorage.c +++ b/tools/vtpm_manager/manager/securestorage.c @@ -393,8 +393,7 @@ TPM_RESULT VTPM_LoadService(void) { vtpmlogerror(VTPM_LOG_VTPM, "Failed to load service data with error = %s\n", tpm_get_error_name(status)); egress: - if (flat_global) - free(flat_global); + free(flat_global); close(fh); return status; diff --git a/tools/vtpm_manager/util/bsg.c b/tools/vtpm_manager/util/bsg.c index 1db59595a5..fa36ce70c8 100644 --- a/tools/vtpm_manager/util/bsg.c +++ b/tools/vtpm_manager/util/bsg.c @@ -616,8 +616,7 @@ static void BSG_Destroy_private(BSG_Type type, BSG_BYTE** src) { else if (format == __FMT_SIZE || format == __FMT_HSIZE) { s += size; BSG_BYTE* ptr = *(BSG_BYTE**) s; - if (ptr) - free(ptr); + free(ptr); s += sizeof(void*); } else if (format == __FMT_PACKED) { diff --git a/tools/xenstat/libxenstat/src/xenstat.c b/tools/xenstat/libxenstat/src/xenstat.c index 58221ebdc6..e01ee8c4eb 100644 --- a/tools/xenstat/libxenstat/src/xenstat.c +++ b/tools/xenstat/libxenstat/src/xenstat.c @@ -284,10 +284,8 @@ void xenstat_free_node(xenstat_node * node) if (node) { if (node->domains) { - for (i = 0; i < node->num_domains; i++) { - if (node->domains[i].name) - free(node->domains[i].name); - } + for (i = 0; i < node->num_domains; i++) + free(node->domains[i].name); for (i = 0; i < NUM_COLLECTORS; i++) if((node->flags & collectors[i].flag) diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c index ae1bd6285b..b088bed625 100644 --- a/tools/xenstore/xenstored_core.c +++ b/tools/xenstore/xenstored_core.c @@ -1411,8 +1411,6 @@ static void manual_node(const char *name, const char *child) talloc_free(node); } -# - static void setup_structure(void) { char *tdbname; diff --git a/xen/acm/acm_chinesewall_hooks.c b/xen/acm/acm_chinesewall_hooks.c index 872575f7a6..8071cec1be 100644 --- a/xen/acm/acm_chinesewall_hooks.c +++ b/xen/acm/acm_chinesewall_hooks.c @@ -117,8 +117,7 @@ static int chwall_init_domain_ssid(void **chwall_ssid, ssidref_t ssidref) static void chwall_free_domain_ssid(void *chwall_ssid) { traceprintk("%s.\n", __func__); - if (chwall_ssid != NULL) - xfree(chwall_ssid); + xfree(chwall_ssid); return; } @@ -344,14 +343,10 @@ static int chwall_set_policy(u8 * buf, u32 buf_size) chwall_bin_pol.max_types = chwall_buf->chwall_max_types; chwall_bin_pol.max_ssidrefs = chwall_buf->chwall_max_ssidrefs; chwall_bin_pol.max_conflictsets = chwall_buf->chwall_max_conflictsets; - if (chwall_bin_pol.ssidrefs != NULL) - xfree(chwall_bin_pol.ssidrefs); - if (chwall_bin_pol.conflict_aggregate_set != NULL) - xfree(chwall_bin_pol.conflict_aggregate_set); - if (chwall_bin_pol.running_types != NULL) - xfree(chwall_bin_pol.running_types); - if (chwall_bin_pol.conflict_sets != NULL) - xfree(chwall_bin_pol.conflict_sets); + xfree(chwall_bin_pol.ssidrefs); + xfree(chwall_bin_pol.conflict_aggregate_set); + xfree(chwall_bin_pol.running_types); + xfree(chwall_bin_pol.conflict_sets); chwall_bin_pol.ssidrefs = ssids; chwall_bin_pol.conflict_aggregate_set = conflict_aggregate_set; chwall_bin_pol.running_types = running_types; @@ -360,14 +355,10 @@ static int chwall_set_policy(u8 * buf, u32 buf_size) error_free: printk("%s: ERROR setting policy.\n", __func__); - if (ssids != NULL) - xfree(ssids); - if (conflict_sets != NULL) - xfree(conflict_sets); - if (running_types != NULL) - xfree(running_types); - if (conflict_aggregate_set != NULL) - xfree(conflict_aggregate_set); + xfree(ssids); + xfree(conflict_sets); + xfree(running_types); + xfree(conflict_aggregate_set); return -EFAULT; } diff --git a/xen/acm/acm_simple_type_enforcement_hooks.c b/xen/acm/acm_simple_type_enforcement_hooks.c index 41bb1b393c..a1d87119e5 100644 --- a/xen/acm/acm_simple_type_enforcement_hooks.c +++ b/xen/acm/acm_simple_type_enforcement_hooks.c @@ -130,8 +130,7 @@ static void ste_free_domain_ssid(void *ste_ssid) { traceprintk("%s.\n", __func__); - if (ste_ssid != NULL) - xfree(ste_ssid); + xfree(ste_ssid); return; } @@ -320,8 +319,7 @@ ste_set_policy(u8 *buf, u32 buf_size) /* 3. replace old policy (activate new policy) */ ste_bin_pol.max_types = ste_buf->ste_max_types; ste_bin_pol.max_ssidrefs = ste_buf->ste_max_ssidrefs; - if (ste_bin_pol.ssidrefs) - xfree(ste_bin_pol.ssidrefs); + xfree(ste_bin_pol.ssidrefs); ste_bin_pol.ssidrefs = (domaintype_t *)ssidrefsbuf; /* clear all ste caches */ @@ -338,7 +336,7 @@ ste_set_policy(u8 *buf, u32 buf_size) error_free: printk("%s: ERROR setting policy.\n", __func__); - if (ssidrefsbuf != NULL) xfree(ssidrefsbuf); + xfree(ssidrefsbuf); return -EFAULT; } diff --git a/xen/arch/ia64/xen/grant_table.c b/xen/arch/ia64/xen/grant_table.c index 01c19b066d..ebdd463129 100644 --- a/xen/arch/ia64/xen/grant_table.c +++ b/xen/arch/ia64/xen/grant_table.c @@ -1348,8 +1348,7 @@ grant_table_create( if ( t != NULL ) { xfree(t->active); - if ( t->maptrack != NULL ) - free_xenheap_page(t->maptrack); + free_xenheap_page(t->maptrack); xfree(t); } return -ENOMEM; diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 118541f311..5a9e4a3cc3 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -3369,10 +3369,8 @@ int ptwr_init(struct domain *d) if ( (x == NULL) || (y == NULL) ) { - if ( x != NULL ) - free_xenheap_page(x); - if ( y != NULL ) - free_xenheap_page(y); + free_xenheap_page(x); + free_xenheap_page(y); return -ENOMEM; } diff --git a/xen/arch/x86/mtrr/generic.c b/xen/arch/x86/mtrr/generic.c index 9ab5be4ec6..025d033a64 100644 --- a/xen/arch/x86/mtrr/generic.c +++ b/xen/arch/x86/mtrr/generic.c @@ -71,8 +71,7 @@ void __init get_mtrr_state(void) /* Free resources associated with a struct mtrr_state */ void __init finalize_mtrr_state(void) { - if (mtrr_state.var_ranges) - xfree(mtrr_state.var_ranges); + xfree(mtrr_state.var_ranges); mtrr_state.var_ranges = NULL; } diff --git a/xen/arch/x86/vmx_vmcs.c b/xen/arch/x86/vmx_vmcs.c index 08a38024a8..39dd8342f2 100644 --- a/xen/arch/x86/vmx_vmcs.c +++ b/xen/arch/x86/vmx_vmcs.c @@ -564,19 +564,14 @@ err_out: void destroy_vmcs(struct arch_vmx_struct *arch_vmx) { - if(arch_vmx->vmcs != NULL) - free_vmcs(arch_vmx->vmcs); - if(arch_vmx->io_bitmap_a != 0) { - free_xenheap_pages( - arch_vmx->io_bitmap_a, get_order_from_bytes(0x1000)); - arch_vmx->io_bitmap_a = 0; - } - if(arch_vmx->io_bitmap_b != 0) { - free_xenheap_pages( - arch_vmx->io_bitmap_b, get_order_from_bytes(0x1000)); - arch_vmx->io_bitmap_b = 0; - } - arch_vmx->vmcs = 0; + free_vmcs(arch_vmx->vmcs); + arch_vmx->vmcs = NULL; + + free_xenheap_pages(arch_vmx->io_bitmap_a, get_order_from_bytes(0x1000)); + arch_vmx->io_bitmap_a = NULL; + + free_xenheap_pages(arch_vmx->io_bitmap_b, get_order_from_bytes(0x1000)); + arch_vmx->io_bitmap_b = NULL; } /* diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index f0feb65fd8..6f5a34774b 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -621,8 +621,7 @@ void evtchn_destroy(struct domain *d) (void)__evtchn_close(d, i); for ( i = 0; i < NR_EVTCHN_BUCKETS; i++ ) - if ( d->evtchn[i] != NULL ) - xfree(d->evtchn[i]); + xfree(d->evtchn[i]); } /* diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index d9e64d3d56..6425ab8f9f 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -1107,8 +1107,7 @@ grant_table_create( if ( t != NULL ) { xfree(t->active); - if ( t->maptrack != NULL ) - free_xenheap_page(t->maptrack); + free_xenheap_page(t->maptrack); xfree(t); } return -ENOMEM; diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index d2321a747e..d5f1ed0263 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -470,6 +470,9 @@ void free_xenheap_pages(void *v, unsigned int order) { unsigned long flags; + if ( v == NULL ) + return; + memguard_guard_range(v, 1 << (order + PAGE_SHIFT)); local_irq_save(flags); -- 2.30.2